
var express = require("express");

var Router = express.Router();  //创建一个路由

var { query } = require("../tool/conn.js");

// Router.get(routerPath,callback)   以get方式对路由进行拦截
// Router.post(routerPath,callback)  以post方式对路由进行拦截
// Router.all(routerPath,callback)   以所有方式对路由进行拦截

// routerPath 路由地址  可以是一级路由,也可以是二级路由
// callback   路由被访问时执行的回调函数

Router.get("/", function (req, res) {
    res.send("/user");
})

// /user/isExistUser
Router.get("/isExistUser", function (req, res) {
    var data = req.query;
    var { user } = data;
    if (user) {
        var sql = `select *  from userinfo where user = '${user}'`;
        query(sql).then(list => {
            console.log(list);
            if (list.length == 0) {
                res.json({
                    status: true,
                    message: "可以使用的用户名"
                })
            } else { // length >0
                res.json({
                    status: false,
                    message: "该用户名已注册"
                })
            }
        }).catch(err => {
            res.json({
                status: false,
                message: err.message
            })
        })
    } else {
        res.json({ status: false, message: "请传入完整参数" })
    }

})

// /user/isExistPhone
Router.get("/isExistPhone", function (req, res) {
    var data = req.query;
    var { phone } = data;
    if (phone) {
        var sql = `select *  from userinfo where phone = '${phone}'`;
        query(sql).then(list => {
            console.log(list);
            if (list.length == 0) {
                res.json({
                    status: true,
                    message: "可以使用的手机号"
                })
            } else { // length >0
                res.json({
                    status: false,
                    message: "该手机号已注册"
                })
            }
        }).catch(err => {
            res.json({
                status: false,
                message: err.message
            })
        })
    } else {
        res.json({ status: false, message: "请传入完整参数" })
    }

})

// /user/isExistEmail
Router.get("/isExistEmail", function (req, res) {
    var data = req.query;
    var { email } = data;
    if (email) {
        var sql = `select *  from userinfo where email = '${email}'`;
        query(sql).then(list => {
            console.log(list);
            if (list.length == 0) {
                res.json({
                    status: true,
                    message: "可以使用的邮箱"
                })
            } else { // length >0
                res.json({
                    status: false,
                    message: "该邮箱已注册"
                })
            }
        }).catch(err => {
            res.json({
                status: false,
                message: err.message
            })
        })
    } else {
        res.json({ status: false, message: "请传入完整参数" })
    }

})


// 注意: 
// post接收不好直接输入数据测试  
// a. 先写成get (以get方式(地址栏传参)测试完毕之后 ),在改为post
// b. 用专门的接口测试工具  postman

// /user/reg
Router.post("/reg", function (req, res) {
    var data = req.body;
    var { user, pwd, phone, email } = data;
    if (user && pwd && phone && email) {
        var sql = `insert into userinfo(user,pwd,phone,email) values('${user}','${pwd}','${phone}','${email}')`
        query(sql).then(data => {
            console.log(data);
            res.json({
                status: true,
                message: "注册成功"
            })
        }).catch(err => {
            res.json({
                status: false,
                message: err.message
            })
        })
    } else {
        res.json({ status: false, message: "请传入完整参数" })
    }

})


// /user/login    => 用户名/密码
Router.post("/login", function (req, res) {
    var data = req.body;
    var { user, pwd } = data;
    if (user && pwd) {

        // 对应用户名查找数据
        var sql = `select *  from userinfo where user = '${user}'`;
        query(sql).then(list => {
            if (list.length > 0) { // [{}]
                var info = list[0];
                if (pwd == info.pwd) {// 前端传入的密码和数据库中的密码对比
                    res.json({
                        status: true,
                        message: "登录成功!"
                    })
                } else {
                    res.json({
                        status: false,
                        message: "用户名或密码有误!"
                    })
                }

            } else {  // == 0
                res.json({
                    status: false,
                    message: "该用户未注册!"
                })
            }
        }).catch(err => {
            res.json({
                status: false,
                message: err.message
            })
        })
    } else {
        res.json({ status: false, message: "请传入完整参数" })
    }

})
// /user/loginAccount  => 账号登录(用户名/手机号/邮箱)  
Router.post("/loginAccount", function (req, res) {
    var data = req.body; //  {account:xxx,pwd:xxx}
    console.log(data);
    var { account, pwd } = data;
    if (account && pwd) {

        // 对应用户名查找数据
        var sql = `select *  from userinfo where user = '${account}' or phone = '${account}' or email= '${account}'`;
        query(sql).then(list => {
            if (list.length > 0) { // [{}]
                var info = list[0];
                if (pwd == info.pwd) {// 前端传入的密码和数据库中的密码对比
                    res.json({
                        status: true,
                        message: "登录成功!",
                        user: info.user
                    })
                } else {
                    res.json({
                        status: false,
                        message: "用户名或密码有误!"
                    })
                }

            } else {  // == 0
                res.json({
                    status: false,
                    message: "该用户未注册!"
                })
            }
        }).catch(err => {
            res.json({
                status: false,
                message: err.message
            })
        })
    } else {
        res.json({ status: false, message: "请传入完整参数" })
    }

})



module.exports = Router;  //暴露创建的路由配置 (还需要配置到创建的服务中)

